package cn.fl.institution.transform.base;

import cn.cmm.base.framework.utils.CollectionUtils;
import cn.fl.institution.dto.PrjInsRedmInfoDTO;
import cn.fl.institution.vo.PrjInsRedmInfoVO;

import java.util.ArrayList;
import java.util.List;


/**
 * @Description: 资管项目赎回表 转换器
 * @Description: VO是客户端传递数据到服务端进行转换的数据
 * @Description: VO转换数据变成DTO传递到服务端
 * @Description: VO不能在服务端出现
 */
public class BasePrjInsRedmInfoVOTransform {


    /**
     * DTO 转  VO
     *
     * @param dto PrjInsRedmInfoDTO
     * @return PrjInsRedmInfoVO
     */
    public static PrjInsRedmInfoVO baseToVO(PrjInsRedmInfoDTO dto) {
        PrjInsRedmInfoVO vo = null;
        if (dto != null) {
            vo = new PrjInsRedmInfoVO();
            vo.setId(dto.getId());
            vo.setPrjId(dto.getPrjId());//项目ID
            vo.setInsCode(dto.getInsCode());//资方编号
            vo.setLsCntNo(dto.getLsCntNo());//合同号
            vo.setPInstId(dto.getPInstId());//流程实例ID
            vo.setRelActAmt(dto.getRelActAmt());//实际应收金额
            vo.setTotalActAmt(dto.getTotalActAmt());//应收合计
            vo.setTotalRelRcptAmt(dto.getTotalRelRcptAmt());//实收合计
            vo.setOvdAmt(dto.getOvdAmt());//逾期金额
            vo.setPnlAmt(dto.getPnlAmt());//罚息金额
            vo.setOvdDay(dto.getOvdDay());//逾期天数
            vo.setRedmPrinAmt(dto.getRedmPrinAmt());//赎回本金金额
            vo.setRedmIntAmt(dto.getRedmIntAmt());//赎回利息金额
            vo.setRedmPnlAmt(dto.getRedmPnlAmt());//赎回罚息金额
            vo.setInsIsDedu(dto.getInsIsDedu());//资方是否抵扣
            vo.setInsPayTime(dto.getInsPayTime());//资方放款时间
            vo.setDeduProveLink(dto.getDeduProveLink());//扣款证明
            vo.setTotalIntRedmBef(dto.getTotalIntRedmBef());//赎回前利息合计
            vo.setTotalIntRedmAft(dto.getTotalIntRedmAft());//赎回后利息合计
            vo.setRedmTm(dto.getRedmTm());//赎回时间
            vo.setDeduProveTm(dto.getDeduProveTm());//扣款时间
            vo.setRedmStartTm(dto.getRedmStartTm());//赎回开始时间
            vo.setRedmCancTm(dto.getRedmCancTm());//赎回取消时间
            vo.setRedmCmpltTm(dto.getRedmCmpltTm());//赎回完成时间
            vo.setRedmStatus(dto.getRedmStatus());//赎回状态
            vo.setCntSigStatus(dto.getCntSigStatus());//合同签署状态
            vo.setCrCntNo(dto.getCrCntNo());//小贷合同号
            vo.setIsDel(dto.getIsDel());//是否删除（1：是，0：否）
            vo.setCrtUsrNm(dto.getCrtUsrNm());//创建者名称

            vo.setCrtTm(dto.getCrtTm());//创建时间
            vo.setCrtUsrId(dto.getCrtUsrId());//创建人
            vo.setMdfTm(dto.getMdfTm());//修改时间
            vo.setMdfUsrId(dto.getMdfUsrId());//修改人
            vo.setDiffAmtTyp(dto.getDiffAmtTyp());
            vo.setDiffAmt(dto.getDiffAmt());
            //赎回类型(PRJ0151) 1.贷前（项目流程） 2.贷中（放款流程） 3.贷后（独立赎回）4.线下OA
            vo.setRedmTypCd(dto.getRedmTypCd());
            vo.setRedmFstPayDt(dto.getRedmFstPayDt());//赎回首期还款日
            vo.setRedmStPd(dto.getRedmStPd());//赎回开始期次
            vo.setRedmStDt(dto.getRedmStDt());//赎回开始日期
            vo.setIsOldData(dto.getIsOldData());//存量数据 没有备份支付表的转我司 或者赎回

            /**
             * 扩展字段
             */
            vo.setFundRasInsNm(dto.getFundRasInsNm());
            vo.setPaySchNo(dto.getPaySchNo());
            vo.setLsPd(dto.getLsPd());
            vo.setContAmt(dto.getContAmt());
            vo.setActLsAmt(dto.getActLsAmt());
            vo.setpNo(dto.getpNo());
            vo.setFlowId(dto.getFlowId());
            vo.setSumFeeAmt(dto.getSumFeeAmt());
            vo.setSumPaidUpAmt(dto.getSumPaidUpAmt());
            vo.setSumArAmt(dto.getSumArAmt());
            vo.setCstNm(dto.getCstNm());
            vo.setCstId(dto.getCstId());
            vo.setPaySchId(dto.getPaySchId());
            vo.setAudStsCd(dto.getAudStsCd());
            vo.setPayerStsCd(dto.getPayerStsCd());
            vo.setFundRasInsId(dto.getFundRasInsId());
            vo.setIsOverdue(dto.getIsOverdue());
            vo.setBussinessLine(dto.getBussinessLine());
            vo.setIsSubmitCreditRD(dto.getIsSubmitCreditRD());
            vo.setSuretySubjectCode(dto.getSuretySubjectCode());
            vo.setOfflineSettle(dto.getOfflineSettle());
            vo.setRedmTotalAmt(dto.getRedmTotalAmt());
            vo.setInsRedmTm(dto.getInsRedmTm());
            vo.setInsRedmResonCode(dto.getInsRedmResonCode());
            vo.setInsRedmDetailResonCode(dto.getInsRedmDetailResonCode());
            vo.setOtherInsRedmReson(dto.getOtherInsRedmReson());
            vo.setRedmPaymentAccountNum(dto.getRedmPaymentAccountNum());
            vo.setRedmPayeeAccountNum(dto.getRedmPayeeAccountNum());
            vo.setSettleStatus(dto.getSettleStatus());
            vo.setPaymentReason(dto.getPaymentReason());
        }
        return vo;
    }

    /**
     * VO 转 DTO
     *
     * @param vo PrjInsRedmInfoVO
     * @return PrjInsRedmInfoDTO
     */
    public static PrjInsRedmInfoDTO baseToDTO(PrjInsRedmInfoVO vo) {
        PrjInsRedmInfoDTO dto = null;
        if (vo != null) {
            dto = new PrjInsRedmInfoDTO();
            dto.setId(vo.getId());
            dto.setPrjId(vo.getPrjId());//项目ID
            dto.setInsCode(vo.getInsCode());//资方编号
            dto.setLsCntNo(vo.getLsCntNo());//合同号
            dto.setPInstId(vo.getPInstId());//流程实例ID
            dto.setRelActAmt(vo.getRelActAmt());//实际应收金额
            dto.setTotalActAmt(vo.getTotalActAmt());//应收合计
            dto.setTotalRelRcptAmt(vo.getTotalRelRcptAmt());//实收合计
            dto.setOvdAmt(vo.getOvdAmt());//逾期金额
            dto.setPnlAmt(vo.getPnlAmt());//罚息金额
            dto.setOvdDay(vo.getOvdDay());//逾期天数
            dto.setRedmPrinAmt(vo.getRedmPrinAmt());//赎回本金金额
            dto.setRedmIntAmt(vo.getRedmIntAmt());//赎回利息金额
            dto.setRedmPnlAmt(vo.getRedmPnlAmt());//赎回罚息金额
            dto.setInsIsDedu(vo.getInsIsDedu());//资方是否抵扣
            dto.setInsPayTime(vo.getInsPayTime());//资方放款时间
            dto.setDeduProveLink(vo.getDeduProveLink());//扣款证明
            dto.setTotalIntRedmBef(vo.getTotalIntRedmBef());//赎回前利息合计
            dto.setTotalIntRedmAft(vo.getTotalIntRedmAft());//赎回后利息合计
            dto.setRedmTm(vo.getRedmTm());//赎回时间
            dto.setDeduProveTm(vo.getDeduProveTm());//扣款时间
            dto.setRedmStartTm(vo.getRedmStartTm());//赎回开始时间
            dto.setRedmCancTm(vo.getRedmCancTm());//赎回取消时间
            dto.setRedmCmpltTm(vo.getRedmCmpltTm());//赎回完成时间
            dto.setRedmStatus(vo.getRedmStatus());//赎回状态
            dto.setCntSigStatus(vo.getCntSigStatus());//合同签署状态
            dto.setCrCntNo(vo.getCrCntNo());//小贷合同号
            dto.setIsDel(vo.getIsDel());//是否删除（1：是，0：否）
            dto.setCrtUsrNm(vo.getCrtUsrNm());//创建者名称

            dto.setCrtTm(vo.getCrtTm());//创建时间
            dto.setCrtUsrId(vo.getCrtUsrId());//创建人
            dto.setMdfTm(vo.getMdfTm());//修改时间
            dto.setMdfUsrId(vo.getMdfUsrId());//修改人
            dto.setDiffAmtTyp(vo.getDiffAmtTyp());
            dto.setDiffAmt(vo.getDiffAmt());
            //赎回类型(PRJ0151) 1.贷前（项目流程） 2.贷中（放款流程） 3.贷后（独立赎回）4.线下OA
            dto.setRedmTypCd(vo.getRedmTypCd());
            dto.setRedmFstPayDt(vo.getRedmFstPayDt());//赎回首期还款日
            dto.setRedmStPd(vo.getRedmStPd());//赎回开始期次
            dto.setRedmStDt(vo.getRedmStDt());//赎回开始日期
            dto.setIsOldData(vo.getIsOldData());//存量数据 没有备份支付表的转我司 或者赎回

            /**
             * 扩展字段
             */
            dto.setFundRasInsNm(vo.getFundRasInsNm());
            dto.setPaySchNo(vo.getPaySchNo());
            dto.setLsPd(vo.getLsPd());
            dto.setContAmt(vo.getContAmt());
            dto.setActLsAmt(vo.getActLsAmt());
            dto.setpNo(vo.getpNo());
            dto.setFlowId(vo.getFlowId());
            dto.setSumFeeAmt(vo.getSumFeeAmt());
            dto.setSumPaidUpAmt(vo.getSumPaidUpAmt());
            dto.setSumArAmt(vo.getSumArAmt());
            dto.setCstNm(vo.getCstNm());
            dto.setCstId(vo.getCstId());
            dto.setPaySchId(vo.getPaySchId());
            dto.setAudStsCd(vo.getAudStsCd());
            dto.setPayerStsCd(vo.getPayerStsCd());
            dto.setFundRasInsId(vo.getFundRasInsId());
            dto.setIsOverdue(vo.getIsOverdue());
            dto.setBussinessLine(vo.getBussinessLine());
            dto.setIsSubmitCreditRD(vo.getIsSubmitCreditRD());
            dto.setSuretySubjectCode(vo.getSuretySubjectCode());
            dto.setOfflineSettle(vo.getOfflineSettle());
            dto.setRedmTotalAmt(vo.getRedmTotalAmt());
            dto.setInsRedmTm(vo.getInsRedmTm());
            dto.setInsRedmResonCode(vo.getInsRedmResonCode());
            dto.setInsRedmDetailResonCode(vo.getInsRedmDetailResonCode());
            dto.setOtherInsRedmReson(vo.getOtherInsRedmReson());
            dto.setRedmPaymentAccountNum(vo.getRedmPaymentAccountNum());
            dto.setRedmPayeeAccountNum(vo.getRedmPayeeAccountNum());
            dto.setSettleStatus(vo.getSettleStatus());
            dto.setPaymentReason(vo.getPaymentReason());
        }
        return dto;
    }

    /**
     * VO集合 转 DTO集合
     *
     * @param list List<PrjInsRedmInfoVO>
     * @return List<PrjInsRedmInfoDTO>
     */
    public static List<PrjInsRedmInfoDTO> toDTOList(List<PrjInsRedmInfoVO> list) {
        List<PrjInsRedmInfoDTO> dtoList = new ArrayList<>();
        if (CollectionUtils.isNotEmpty(list)) {
            for (PrjInsRedmInfoVO vo : list) {
                dtoList.add(baseToDTO(vo));
            }
        }
        return dtoList;
    }

    /**
     * DTO集合 转 VO集合
     *
     * @param list List<PrjInsRedmInfoDTO>
     * @return List<PrjInsRedmInfoVO>
     */
    public static List<PrjInsRedmInfoVO> toVOList(List<PrjInsRedmInfoDTO> list) {
        List<PrjInsRedmInfoVO> voList = new ArrayList<>();
        if (CollectionUtils.isNotEmpty(list)) {
            for (PrjInsRedmInfoDTO dto : list) {
                voList.add(baseToVO(dto));
            }
        }
        return voList;
    }
}
